The present invention relates generally to computer system input/output request processing, and more specifically, to efficient handling of queued-direct input/output requests and completions.
Queued-direct-I/O (QDIO) provides a means for a program, such as an operating system, to directly and asynchronously communicate with one or more input/output devices or a network of devices by the use of data queues constructed and managed in main storage of an implementing computer system. The queues allow the communication to be performed in a predictable and efficient manner without requiring services of a centralized controlling mechanism, such as an operating system input/output supervisor, and the resulting overhead such a mechanism implies.
An adapter supporting QDIO may have 0 to N input queues and/or 0 to N output queues, where N is an arbitrary number such as 32. When QDIO input queues are used, the program can directly access data placed into the input queues by the adapter. Typically, the source of the data placed into the input queues is an I/O device or network of devices to which the adapter is connected. Correspondingly, when QDIO output queues are used, the program can transmit data directly to the adapter by placing data into appropriate output queues. Depending on the adapter, the data placed into the output queues may be used internally by the adapter or may be transmitted to one or more I/O devices to which the adapter is connected. For both QDIO input queues and QDIO output queues, main storage of the implementing computer system is used as the medium by which data is exchanged between the program and the adapter.